import { AbpHttpInterceptor, RefreshTokenService, AbpHttpConfigurationService } from 'abp-ng2-module';
import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { NgModule } from '@angular/core';
import * as ApiServiceProxies from './service-proxies';
import { ZeroRefreshTokenService } from '@account/auth/zero-refresh-token.service';
import { ZeroTemplateHttpConfigurationService } from './zero-template-http-configuration.service';
import { AppHttpInterceptor } from './appHttpInterceptor';

@NgModule({
    providers: [
        ApiServiceProxies.AuditLogServiceProxy,
        ApiServiceProxies.CachingServiceProxy,
        ApiServiceProxies.ChatServiceProxy,
        ApiServiceProxies.CommonLookupServiceProxy,
        ApiServiceProxies.EditionServiceProxy,
        ApiServiceProxies.FriendshipServiceProxy,
        ApiServiceProxies.HostSettingsServiceProxy,
        ApiServiceProxies.LanguageServiceProxy,
        ApiServiceProxies.NotificationServiceProxy,
        ApiServiceProxies.OrganizationUnitServiceProxy,
        ApiServiceProxies.PermissionServiceProxy,
        ApiServiceProxies.ProfileServiceProxy,
        ApiServiceProxies.RoleServiceProxy,
        ApiServiceProxies.SessionServiceProxy,
        ApiServiceProxies.TenantServiceProxy,
        ApiServiceProxies.TenantDashboardServiceProxy,
        ApiServiceProxies.TenantSettingsServiceProxy,
        ApiServiceProxies.TimingServiceProxy,
        ApiServiceProxies.UserServiceProxy,
        ApiServiceProxies.UserLinkServiceProxy,
        ApiServiceProxies.UserLoginServiceProxy,
        ApiServiceProxies.WebLogServiceProxy,
        ApiServiceProxies.AccountServiceProxy,
        ApiServiceProxies.TokenAuthServiceProxy,
        ApiServiceProxies.UserDelegationServiceProxy,
        ApiServiceProxies.NavigationServiceProxy,
        { provide: RefreshTokenService, useClass: ZeroRefreshTokenService },
        { provide: AbpHttpConfigurationService, useClass: ZeroTemplateHttpConfigurationService },
        { provide: HTTP_INTERCEPTORS, useClass: AppHttpInterceptor, multi: true },
        ApiServiceProxies.ArchiveServiceProxy,
        ApiServiceProxies.ColumnConfigServiceProxy,
        ApiServiceProxies.ContentServiceProxy,
        ApiServiceProxies.Content2ServiceProxy,
        ApiServiceProxies.ContentSyncServiceProxy,
        ApiServiceProxies.CustomConfigServiceProxy,
        ApiServiceProxies.DataLogsServiceProxy,
        ApiServiceProxies.FileUploadServiceProxy,
        ApiServiceProxies.FindLanguageServiceProxy,
        ApiServiceProxies.FrontendPageServiceProxy,
        ApiServiceProxies.FrontUploadConfigureServiceProxy,
        ApiServiceProxies.MenuCleanServiceProxy,
        ApiServiceProxies.MenuInfoServiceProxy,
        ApiServiceProxies.MenuInfoSyncServiceProxy,
        ApiServiceProxies.ModuleServiceProxy,
        ApiServiceProxies.MyReplyMsgServiceProxy,
        ApiServiceProxies.NavigationSyncServiceProxy,
        ApiServiceProxies.PageViewServiceProxy,
        ApiServiceProxies.PostServiceProxy,
        ApiServiceProxies.RewriteServiceProxy,
        ApiServiceProxies.SeoServiceProxy,
        ApiServiceProxies.SeoFrontEndServiceProxy,
        ApiServiceProxies.SiteMapServiceProxy,
        ApiServiceProxies.StaticPageServiceProxy,
        ApiServiceProxies.TaxonomyServiceProxy,
        ApiServiceProxies.UserRoleUnitSelectionServiceProxy,
        ApiServiceProxies.WorkFlowServiceProxy,
        ApiServiceProxies.WorkFlowDesignServiceProxy,
        ApiServiceProxies.WorkFlowManagerServiceProxy,
        ApiServiceProxies.WorkFlowQueryServiceProxy,
        ApiServiceProxies.DashboardServiceProxy,
        ApiServiceProxies.BadWordsServiceProxy,
        ApiServiceProxies.MessagesServiceProxy,
        ApiServiceProxies.FileLibraryServiceProxy,
        ApiServiceProxies.MultipartUploadServiceProxy,
        ApiServiceProxies.ContentRouteServiceProxy,
        ApiServiceProxies.PreviewServiceProxy
    ]
})
export class ServiceProxyModule { }
